home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 January / enter-2004-01.iso / files / maxima-5.9.0.exe / {app} / share / maxima / 5.9.0 / src / strmac.lisp < prev    next >
Encoding:
Text File  |  2003-02-09  |  4.7 KB  |  123 lines

  1. ;;; -*-  Mode: Lisp; Package: Maxima; Syntax: Common-Lisp; Base: 10 -*- ;;;;
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ;;;     The data in this file contains enhancments.                    ;;;;;
  4. ;;;                                                                    ;;;;;
  5. ;;;  Copyright (c) 1984,1987 by William Schelter,University of Texas   ;;;;;
  6. ;;;     All rights reserved                                            ;;;;;
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8. ;;;     (c) Copyright 1980 Massachusetts Institute of Technology         ;;;
  9. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  10.  
  11. (in-package "MAXIMA")
  12. (macsyma-module strmac macro)
  13.  
  14. ;; Data Representation macros.
  15.  
  16. ;; Hand coded macros for manipulating data structures in a simple
  17. ;; way, yet still preserving some abstraction.  Replacement for the mode
  18. ;; package.  We no longer know the type of things at run-time, so the names
  19. ;; of each macro must reflect the type of its operand, e.g.
  20. ;; RAT-NUMER versus MRAT-NUMER.
  21.  
  22. (DEFMACRO MAKE-G-REP (OPERATOR . OPERANDS)
  23.   `(LIST (LIST ,OPERATOR) . ,OPERANDS))
  24. (DEFMACRO MAKE-G-REP-SIMP (OPERATOR . OPERANDS)
  25.   `(LIST (LIST ,OPERATOR) . ,OPERANDS))
  26.  
  27. (DEFMACRO G-REP-OPERATOR (EXP) `(CAAR ,EXP))
  28. (DEFMACRO G-REP-OPERANDS (EXP) `(CDR ,EXP))
  29. (DEFMACRO G-REP-FIRST-OPERAND (EXP)
  30.    `(CADR ,EXP))
  31.  
  32. (DEFMACRO MAKE-MPLUS (&rest ARGS) `(LIST '(MPLUS) . ,ARGS))
  33. (DEFMACRO MAKE-MPLUS-L (LLIST) `(CONS '(MPLUS) ,LLIST))
  34. (DEFMACRO MAKE-MPLUS-SIMP (&rest ARGS) `(LIST '(MPLUS SIMP) . ,ARGS))
  35. (DEFMACRO MAKE-MPLUS-SIMP-L (LLIST) `(CONS '(MPLUS SIMP) ,LLIST))
  36.  
  37.  
  38.  
  39. (DEFMACRO MAKE-MTIMES (&rest ARGS) `(LIST '(MTIMES) . ,ARGS))
  40. (DEFMACRO MAKE-MTIMES-L (LLIST) `(CONS '(MTIMES) ,LLIST))
  41. (DEFMACRO MAKE-MTIMES-SIMP (&rest ARGS) `(LIST '(MTIMES SIMP) . ,ARGS))
  42. (DEFMACRO MAKE-MTIMES-SIMP-L (LLIST) `(CONS '(MTIMES SIMP) ,LLIST))
  43.  
  44. ; losing MACLISP doesn't like BASE as a variable name !!
  45. (DEFMACRO MAKE-MEXPT (thing-being-raised-to-power EXPT)
  46.    `(LIST '(MEXPT) ,thing-being-raised-to-power ,EXPT))
  47. (DEFMACRO MAKE-MEXPT-L (LLIST) `(CONS '(MEXPT) ,LLIST))
  48. (DEFMACRO MAKE-MEXPT-SIMP (thing-being-raised-to-power EXPT)
  49.    `(LIST '(MEXPT SIMP) ,thing-being-raised-to-power ,EXPT))
  50. (DEFMACRO MAKE-MEXPT-SIMP-L (LLIST) `(CONS '(MEXPT SIMP) ,LLIST))
  51.  
  52. (DEFMACRO MEXPT-BASE (MEXPT) `(CADR ,MEXPT))
  53. (DEFMACRO MEXPT-EXPT (MEXPT) `(CADDR ,MEXPT))
  54.  
  55. (DEFMACRO MAKE-MEQUAL (LHS RHS) `(LIST '(MEQUAL) ,LHS ,RHS))
  56. (DEFMACRO MAKE-MEQUAL-L (LLIST) `(CONS '(MEQUAL) ,LLIST))
  57. (DEFMACRO MAKE-MEQUAL-SIMP (LHS RHS) `(LIST '(MEQUAL SIMP) ,LHS ,RHS))
  58. (DEFMACRO MAKE-MEQUAL-SIMP-L (LLIST) `(CONS '(MEQUAL SIMP) ,LLIST))
  59.  
  60. (DEFMACRO MEQUAL-LHS (MEQUAL) `(CADR ,MEQUAL))
  61. (DEFMACRO MEQUAL-RHS (MEQUAL) `(CADDR ,MEQUAL))
  62.  
  63. (DEFMACRO MAKE-MLIST (&rest ARGS) `(LIST '(MLIST) . ,ARGS))
  64. (DEFMACRO MAKE-MLIST-L (LLIST) `(CONS '(MLIST) ,LLIST))
  65. (DEFMACRO MAKE-MLIST-SIMP (&rest ARGS) `(LIST '(MLIST SIMP) . ,ARGS))
  66. (DEFMACRO MAKE-MLIST-SIMP-L (LLIST) `(CONS '(MLIST SIMP) ,LLIST))
  67.  
  68. (DEFMACRO MAKE-MTEXT (&rest ARGS) `(LIST '(MTEXT) . ,ARGS))
  69.  
  70. (DEFMACRO MAKE-RAT (&rest ARGS) `(LIST '(RAT) . ,ARGS))
  71. (DEFMACRO MAKE-RAT-SIMP (&rest ARGS) `(LIST '(RAT SIMP) . ,ARGS))
  72. (DEFMACRO MAKE-RAT-BODY (NUMER DENOM) `(CONS ,NUMER ,DENOM))
  73. (DEFMACRO RAT-NUMER (RAT) `(CADR ,RAT))
  74. (DEFMACRO RAT-DENOM (RAT) `(CADDR ,RAT))
  75.  
  76. ;; Schematic of MRAT form:
  77. ;;  ((MRAT SIMP <varlist> <genvars>) <numer> . <denom>)
  78.  
  79. ;; Schematic of <numer> and <denom>:
  80. ;;  (<genvar> <exponent 1> <coefficient 1> ...)
  81.  
  82. ;; Representation for X^2+1:
  83. ;;  ((MRAT SIMP ($X) (G0001)) (G0001 2 1 0 1) . 1)
  84.  
  85. ;; Representation for X+Y:
  86. ;;  ((MRAT SIMP ($X $Y) (G0001 G0002)) (G0001 1 1 0 (G0002 1 1)) . 1)
  87.  
  88. (DEFMACRO MRAT-BODY  (MRAT) `(CDR ,MRAT))
  89. (DEFMACRO MRAT-NUMER (MRAT) `(CADR ,MRAT))
  90. (DEFMACRO MRAT-DENOM (MRAT) `(CDDR ,MRAT))
  91.  
  92. (DEFMACRO MAKE-MRAT (VARLIST GENVARS NUMER DENOM)
  93.   `((MRAT ,VARLIST ,GENVARS) ,NUMER . ,DENOM))
  94.  
  95. (DEFMACRO MAKE-MRAT-BODY (NUMER DENOM) `(CONS ,NUMER ,DENOM))
  96.  
  97. ;; Data structures used only in this file.
  98.  
  99. (DEFMACRO TRIG-CANNON (OPERATOR) `(GET ,OPERATOR 'TRIG-CANNON))
  100.  
  101. ;; Linear equation -- cons of linear term and constant term.
  102.  
  103. (DEFMACRO MAKE-LINEQ (LINEAR CONSTANT) `(CONS ,LINEAR ,CONSTANT))
  104. (DEFMACRO LINEQ-LINEAR   (LINEQ) `(CAR ,LINEQ))
  105. (DEFMACRO LINEQ-CONSTANT (LINEQ) `(CDR ,LINEQ))
  106.  
  107. ;; Solutions -- a pair of polynomial/multiplicity lists
  108.  
  109. (DEFMACRO MAKE-SOLUTION (WINS LOSSES) `(CONS ,WINS ,LOSSES))
  110. (DEFMACRO SOLUTION-WINS   (SOLUTION) `(CAR ,SOLUTION))
  111. (DEFMACRO SOLUTION-LOSSES (SOLUTION) `(CDR ,SOLUTION))
  112.  
  113. ;; Polynomials -- these appear in the numerator or denominator
  114. ;; of MRAT forms.  This doesn't handle the case of a coefficient
  115. ;; polynomial.
  116.  
  117. (DEFMACRO MAKE-MRAT-POLY (VAR TERMS) `(CONS ,VAR ,TERMS))
  118. (DEFMACRO POLY-VAR   (POLY) `(CAR ,POLY))
  119. (DEFMACRO POLY-TERMS (POLY) `(CDR ,POLY))
  120.  
  121.  
  122.  
  123.